/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mvc.dao;
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.LinkedList;
import mvc.modelos.Cuenta;

/**
 *
 * @author pezcado
 */
public class CuentaDAO implements IDAO<Cuenta> {

    private PreparedStatement consultar;
    private PreparedStatement insertar;
    private PreparedStatement modificar;
    private PreparedStatement eliminar;
    private PreparedStatement listar;
    private Model model;

     public Cuenta consultar(int contrasena) throws SQLException {
        model.getInstance();
        
        String sql="select codigo, fechaCreacion, fechaUltimoAcceso, nombreUsuario, contrasena, persona_identificacion,"
                + "id, estado, descripcion from Cuenta where contrasena="+contrasena;
        consultar=model.getCon().prepareStatement(sql);
        ResultSet resultSet= consultar.executeQuery();
        Cuenta cuenta= new Cuenta();
        
        try{
            resultSet.next();
    
            cuenta.setCodigo(resultSet.getInt("codigo"));
            cuenta.setFechaCreacion(resultSet.getDate("fechaCreacion"));
            cuenta.setUltimoAcceso(resultSet.getDate("fechaUltimoAcceso"));
            cuenta.setNombreUsuario(resultSet.getString("nombreUsuario"));
            cuenta.setContrasena(resultSet.getInt("contrasena"));
            cuenta.setPersonaIdentificacion(resultSet.getInt("identificacion"));
            cuenta.setId(resultSet.getInt("id"));
            cuenta.setEstado(resultSet.getString("estado"));
            cuenta.setDescripcion(resultSet.getString("descripcion"));

            //return cuenta;
        }catch(Exception e){

        }
        return cuenta;
    }
     
     public void insertar(Cuenta IDAO) throws SQLException {
        model.getInstance();
        
        if(insertar==null){
            String sql="insert into Cuenta (codigo, fechaCreacion, fechaUltimoAcceso, nombreUsuario, contrasena, persona_identificacion,"
                + "id, estado, descripcion) values(?,?,?,?,?,?,?,?,?)";
            insertar=model.getCon().prepareStatement(sql);
        }
        insertar.setString(1, null);
        insertar.setDate(2, IDAO.getFechaCreacion());
        insertar.setDate(3, IDAO.getUltimoAcceso());
        insertar.setString(4, IDAO.getNombreUsuario());
        insertar.setInt(5, IDAO.getContrasena());
        insertar.setInt(6, IDAO.getPersonaIdentificacion());
        insertar.setInt(7, IDAO.getId());
        insertar.setString(8, IDAO.getEstado());
        insertar.setString(9, IDAO.getDescripcion());
        
        insertar.executeUpdate();
    }

    public void modificar(Cuenta IDAO) throws SQLException {
        model.getInstance();
        
        String sql="UPDATE Cuenta SET nombreUsuario='"+IDAO.getNombreUsuario()+"' WHERE contrasena="+IDAO.getCodigo();
        
        modificar=model.getCon().prepareStatement(sql);
        modificar.executeUpdate();
    }

    public void eliminar(Cuenta IDAO) throws SQLException {
        model.getInstance();
        
        String sql="delete from Cuenta where Codigo="+IDAO.getCodigo();
        eliminar=model.getCon().prepareStatement(sql);
        eliminar.executeUpdate();
    }

    public LinkedList<Cuenta> listar() throws SQLException {
        throw new UnsupportedOperationException("Not supported yet.");
    }
    
    /*public Cuenta consultar(String nombreUsuario, int contrasena, String tipoUsuario) throws SQLException{
        model=Model.getInstance();
        String sql="SELECT c.nombreUsuario, c.contrasena, r.tipoRol FROM Cuenta c, Rol r, Persona p"
                + "WHERE c.persona_identificacion=p.identificacion AND p.identificacion=r.persona_identificacion AND"
                + "c.nombreUsuario="+nombreUsuario+" AND c.contrasena ="+contrasena+" AND r.tipoRol="+tipoUsuario;
        consultar=model.getCon().prepareStatement(sql);
        ResultSet rs=consultar.executeQuery();
        try{
            Cuenta c=new Cuenta()
        }catch(Exception e){}
        return null;
    }*/    
}
